inline fun InvokeTwo(n: Int, action1: (Int) -> Unit, noinline action2: (Int) -> Unit): (Int) -> Unit {
    println("Enter InvokeTwo $n")
    action1(n)
    action2(n)
    println("Exit InvokeTwo $n")
    return { _: Int -> println("lambada return from InvokeTwo") }
}

fun report(n: Int) {
    println("")
    println("call with $n,")
    val stackTrace = RuntimeException().stackTrace
    println("Stack depth:${stackTrace.size}")
    println("Partial listing of the stack:")
    stackTrace.take(3).forEach(::println)
}
InvokeTwo(1, { i -> report(i) }, { i -> report(i) })
